home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / misc / gms_dev.lha / GMSDev / Includes / system / sysobject.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-19  |  10.8 KB  |  302 lines

  1. #ifndef SYSTEM_SYSOBJECT_H
  2. #define SYSTEM_SYSOBJECT_H TRUE
  3.  
  4. /*
  5. **  $VER: sysobject.h
  6. **
  7. **  (C) Copyright 1996-1998 DreamWorld Productions.
  8. **      All Rights Reserved.
  9. **
  10. */
  11.  
  12. #ifndef DPKERNEL_H
  13. #include <dpkernel/dpkernel.h>
  14. #endif
  15.  
  16. /****************************************************************************
  17. ** The SysObject structure.
  18. */
  19.  
  20. #define VER_SYSOBJECT  2
  21. #define TAGS_SYSOBJECT ((ID_SPCTAGS<<16)|ID_SYSOBJECT)
  22.  
  23. struct SysObject {
  24.   struct Head Head;
  25.   struct SysObject *Prev;  /* Previous object in list */
  26.   struct SysObject *Next;  /* Next object in list */
  27.   WORD   ObjectID;         /* ID of this object, eg ID_PICTURE if master, or ID_HIDDEN if child */
  28.   WORD   ClassID;          /* Class reference ID, use ID_HIDDEN if no class */
  29.   BYTE   *Name;            /* Standard name of the object, eg "Picture", "Universe"... */
  30.   LIBPTR LONG  (*CopyToUnv)(mreg(__a0) struct Universe *, mreg(__a1) struct Head *);
  31.   LIBPTR LONG  (*CopyFromUnv)(mreg(__a0) struct Universe *, mreg(__a1) struct Head *);
  32.   LIBPTR WORD  (*CheckFile)(mreg(__a0) struct File *, mreg(__a1) APTR Buffer);
  33.   LIBPTR struct Head * (*Load)(mreg(__a0) struct File *);
  34.   LIBPTR LONG  (*Show)(mreg(__a0) APTR Object);
  35.   LIBPTR struct Head * (*Get)(mreg(__a0) APTR);
  36.   LIBPTR void  (*Free)(mreg(__a0) APTR Object);
  37.   LIBPTR LONG  (*Init)(mreg(__a0) APTR Object, mreg(__a1) APTR Container);
  38.   LIBPTR LONG  (*Read)(mreg(__a0) APTR Object, mreg(__a1) APTR Buffer, mreg(__d0) LONG Length);
  39.   LIBPTR LONG  (*Write)(mreg(__a0) APTR Object, mreg(__a1) APTR Buffer, mreg(__d0) LONG Length);
  40.   LIBPTR LONG  (*Rename)(mreg(__a0) APTR Object, mreg(__a1) BYTE *Name);
  41.   LIBPTR void  (*Hide)(mreg(__a0) APTR Object);
  42.   LIBPTR void  (*yy03)(void);
  43.   LIBPTR LONG  (*SaveToFile)(mreg(__a0) APTR Object, mreg(__a1) struct File *DestFile);
  44.   LIBPTR LONG  (*Query)(mreg(__a0) APTR Object);
  45.   LIBPTR LONG  (*Activate)(mreg(__a0) APTR Object);
  46.   LIBPTR LONG  (*Deactivate)(mreg(__a0) APTR Object);
  47.   LIBPTR LONG  (*Draw)(mreg(__a0) APTR Object);
  48.   LIBPTR LONG  (*Clear)(mreg(__a0) APTR Object);
  49.   LIBPTR LONG  (*Reset)(mreg(__a0) APTR Object);
  50.   LIBPTR LONG  (*Flush)(mreg(__a0) APTR Object);
  51.   LIBPTR LONG  (*TagTrigger)(mreg(__a0) LONG *TagPos, mreg(__a1) struct Head *);
  52.   struct SysObject *Master;
  53.   struct Field *FieldArray;
  54.   LIBPTR void  (*Unlock)(mreg(__a0) APTR Object);
  55.   LIBPTR LONG  (*DetachParent)(mreg(__a0) APTR Child, mreg(__a1) APTR Parent);
  56.   LIBPTR LONG  (*DetachChild)(mreg(__a0) APTR Child, mreg(__a1) APTR Parent);
  57.   LIBPTR LONG  (*Unhook)(mreg(__a0) APTR Object, mreg(__a1) APTR Chain);
  58.   LIBPTR void  (*MoveToBack)(mreg(__a0) APTR Object);
  59.   LIBPTR void  (*MoveToFront)(mreg(__a0) APTR Object);
  60.   BYTE   *FileExtension;
  61.   BYTE   *FileDesc;
  62.   LIBPTR LONG  (*Copy)(mreg(__a0) APTR Source, mreg(__a1) APTR Dest);
  63.   LIBPTR ECODE (*Lock)(mreg(__a0) APTR Object, mreg(__d0) WORD LockCount);
  64.   LIBPTR LONG  (*Seek)(mreg(__a0) APTR Object, mreg(__d0) LONG Offset, mreg(__d1) WORD Position);
  65.   LIBPTR ECODE (*AttemptExclusive)(mreg(__a0) APTR Object);
  66.   LONG   FieldSize;
  67.   LIBPTR void  (*FreeExclusive)(mreg(__a0) APTR Object);
  68.   WORD   FieldTotal;
  69.   WORD   ClassVersion;
  70.   LONG   ObjectSize;
  71. };
  72.  
  73. #define SOA_Prev             (TAPTR|12)
  74. #define SOA_Next             (TAPTR|16)
  75. #define SOA_CopyToUnv        (TAPTR|28)
  76. #define SOA_CopyFromUnv      (TAPTR|32)
  77. #define SOA_CheckFile        (TAPTR|36)
  78. #define SOA_Load             (TAPTR|40)
  79. #define SOA_Show             (TAPTR|44)
  80. #define SOA_Get              (TAPTR|48)
  81. #define SOA_Free             (TAPTR|52)
  82. #define SOA_Init             (TAPTR|56)
  83. #define SOA_Read             (TAPTR|60)
  84. #define SOA_Write            (TAPTR|64)
  85. #define SOA_Rename           (TAPTR|68)
  86. #define SOA_Hide             (TAPTR|72)
  87. #define SOA_yy03             (TAPTR|76)
  88. #define SOA_SaveToFile       (TAPTR|80)
  89. #define SOA_Query            (TAPTR|84)
  90. #define SOA_Activate         (TAPTR|88)
  91. #define SOA_Deactivate       (TAPTR|92)
  92. #define SOA_Draw             (TAPTR|96)
  93. #define SOA_Clear            (TAPTR|100)
  94. #define SOA_Reset            (TAPTR|104)
  95. #define SOA_Flush            (TAPTR|108)
  96. #define SOA_TagTrigger       (TAPTR|112)
  97. #define SOA_Master           (TAPTR|116)
  98. #define SOA_FieldArray       (TAPTR|120)
  99. #define SOA_Unlock           (TAPTR|124)
  100. #define SOA_DetachParent     (TAPTR|128)
  101. #define SOA_DetachChild      (TAPTR|132)
  102. #define SOA_Unhook           (TAPTR|136)
  103. #define SOA_MoveToBack       (TAPTR|140)
  104. #define SOA_MoveToFront      (TAPTR|144)
  105. #define SOA_FileExtension    (TAPTR|148)
  106. #define SOA_FileDesc         (TAPTR|152)
  107. #define SOA_Copy             (TAPTR|156)
  108. #define SOA_Lock             (TAPTR|160)
  109. #define SOA_Seek             (TAPTR|164)
  110. #define SOA_AttemptExclusive (TAPTR|168)
  111. #define SOA_FieldSize        (TLONG|172)
  112. #define SOA_FreeExclusive    (TAPTR|176)
  113. #define SOA_FieldTotal       (TWORD|180)
  114. #define SOA_ClassVersion     (TWORD|182)
  115. #define SOA_ObjectSize       (TLONG|184)
  116.  
  117. /**************************************************************************
  118. ** Structure for field orientation.
  119. */
  120.  
  121. struct Field {
  122.   BYTE *Name;      /* [00] The english name for the field, e.g. "Width" */
  123.   WORD Offset;     /* [04] The field's position in the object structure */
  124.   WORD FieldID;    /* [06] Provides a fast way of finding fields, eg FID_WIDTH */
  125.   LONG Flags;      /* [08] Special flags that describe the field */
  126.   LONG MinRange;   /* [12] Minimum value for this field (for debugging) */
  127.   LONG MaxRange;   /* [16] Maximum value for this field (for debugging) */
  128.   LIBPTR void (*GetField)(mreg(__a0) APTR Object);
  129.   LIBPTR void (*SetField)(mreg(__a0) APTR Object, mreg(__d0) LONG Value);
  130. };
  131.  
  132. struct FieldDef {
  133.   BYTE *Name;
  134.   LONG Value;
  135. };
  136.  
  137. #define FDF_BYTE      0x10000000  /* Field is byte sized */
  138. #define FDF_WORD      0x20000000  /* Field is word sized */
  139. #define FDF_LONG      0x40000000  /* Field is long sized */
  140. #define FDF_QUAD      0x80000000  /* Field is 2xlong sized */
  141.  
  142. #define FD_OBJECT     0x00000001
  143. #define FD_CHILD      0x00000002
  144. #define FD_STRING     0x00000004
  145. #define FD_POINTER    0x00000008
  146. #define FD_BYTEARRAY  0x00000010
  147. #define FD_WORDARRAY  0x00000020
  148. #define FD_LONGARRAY  0x00000040
  149. #define FD_UNSIGNED   0x00000080
  150. #define FD_RANGE      0x00000100
  151. #define FD_FLAGS      0x00000200
  152. #define FD_HEX        0x00000400
  153. #define FD_SOURCE     0x00000800
  154. #define FD_LOOKUP     0x00001000
  155.  
  156. #define FDF_OBJECT    0x40000009  /* Field refers to another object */
  157. #define FDF_CHILD     0x4000000A  /* Field refers to a child object */
  158. #define FDF_STRING    0x4000000C  /* Field points to a string */
  159. #define FDF_POINTER   0x40000008  /* Field is an address pointer */
  160. #define FDF_BYTEARRAY 0x40000018  /* Points to an array of bytes */
  161. #define FDF_WORDARRAY 0x40000028  /* Points to an array of words */
  162. #define FDF_LONGARRAY 0x40000048  /* Points to an array of longs */
  163. #define FDF_UNSIGNED  0x00000080  /* Field is unsigned (no negatives) */
  164. #define FDF_RANGE     0x00000100  /* Enforce range limitations */
  165. #define FDF_FLAGS     0x00000200  /* Field contains flags */
  166. #define FDF_HEX       0x00000400  /* Field is in hexadecimal */
  167. #define FDF_SOURCE    0x40000808  /* FileName, MemPtr etc */
  168. #define FDF_LOOKUP    0x00001000  /* Lookup names for values in this field */
  169.  
  170. /**************************************************************************
  171. ** Field identifiers provide a quick way of finding certain names.
  172. */
  173.  
  174. #define FID_Flags         1
  175. #define FID_Source        2
  176. #define FID_ScrHeight     3
  177. #define FID_ScrWidth      4
  178. #define FID_ScrMode       5
  179. #define FID_Width         6
  180. #define FID_Height        7
  181. #define FID_Size          8
  182. #define FID_Data          9
  183. #define FID_Array         10
  184. #define FID_MaxSize       11
  185. #define FID_Parent        12
  186. #define FID_Child         13
  187. #define FID_Restore       14
  188. #define FID_MemType       15
  189. #define FID_Planes        16
  190. #define FID_AmtColours    17
  191. #define FID_Palette       18
  192. #define FID_LineMod       19
  193. #define FID_PlaneMod      20
  194. #define FID_ByteWidth     21
  195. #define FID_Type          22
  196. #define FID_Buffers       23
  197. #define FID_Owner         24
  198. #define FID_Entries       25
  199. #define FID_GfxCoords     26
  200. #define FID_Frame         27
  201. #define FID_ClipLX        28
  202. #define FID_ClipRX        29
  203. #define FID_ClipTY        30
  204. #define FID_ClipBY        31
  205. #define FID_FPlane        32
  206. #define FID_PropWidth     33
  207. #define FID_PropHeight    34
  208. #define FID_Attrib        35
  209. #define FID_PlaneSize     36
  210. #define FID_SrcBitmap     37
  211. #define FID_DestBitmap    38
  212. #define FID_MaskBitmap    39
  213. #define FID_MaskCoords    40
  214. #define FID_AmtFrames     41
  215. #define FID_XCoord        42
  216. #define FID_YCoord        43
  217. #define FID_Frequency     44
  218. #define FID_Pair          45
  219. #define FID_Volume        46
  220. #define FID_Priority      47
  221. #define FID_Length        48
  222. #define FID_Octave        49
  223. #define FID_Bitmap        50
  224. #define FID_Sound         51
  225. #define FID_Name          52
  226. #define FID_Colour        53
  227. #define FID_Point         54
  228. #define FID_Gutter        55
  229. #define FID_Char          56
  230. #define FID_Port          57
  231. #define FID_XChange       58
  232. #define FID_YChange       59
  233. #define FID_ZChange       60
  234. #define FID_Buttons       61
  235. #define FID_ButtonTimeOut 62
  236. #define FID_MoveTimeOut   63
  237. #define FID_NXLimit       64
  238. #define FID_NYLimit       65
  239. #define FID_PXLimit       66
  240. #define FID_PYLimit       67
  241. #define FID_Number        68
  242. #define FID_Year          69
  243. #define FID_Month         70
  244. #define FID_Day           71
  245. #define FID_Hour          72
  246. #define FID_Minute        73
  247. #define FID_Second        74
  248. #define FID_Micro         75
  249. #define FID_ModBase       76
  250. #define FID_Segment       77
  251. #define FID_Public        78
  252. #define FID_MinVersion    79
  253. #define FID_MinRevision   80
  254. #define FID_Date          81
  255. #define FID_Author        82
  256. #define FID_Copyright     83
  257. #define FID_Short         84
  258. #define FID_Args          85
  259. #define FID_GVBase        86
  260. #define FID_Prev          87
  261. #define FID_Next          88
  262. #define FID_Task          89
  263. #define FID_Address       90
  264. #define FID_ClassID       91
  265. #define FID_ClassName     92
  266. #define FID_CPU           93
  267. #define FID_ModName       94
  268. #define FID_ModNumber     95
  269. #define FID_Extension     96
  270. #define FID_Module        97
  271. #define FID_ConfigFile    98
  272. #define FID_FileHead      99
  273. #define FID_ChildDir      100
  274. #define FID_ChildFile     101
  275. #define FID_BytePos       102
  276. #define FID_DataProcessor 103
  277. #define FID_MemPtr1       104
  278. #define FID_MemPtr2       105
  279. #define FID_MemPtr3       106
  280. #define FID_Command       107
  281. #define FID_Link          108
  282. #define FID_Raster        109
  283. #define FID_BmpXOffset    110
  284. #define FID_BmpYOffset    111
  285. #define FID_Switch        112
  286. #define FID_Screen        113
  287. #define FID_XOffset       114
  288. #define FID_YOffset       115
  289. #define FID_DirectGfx     116
  290. #define FID_EntryList     117
  291. #define FID_DirectMasks   118
  292. #define FID_EntrySize     119
  293. #define FID_Music         120
  294. #define FID_Title         121
  295. #define FID_Track         122
  296. #define FID_Artist        123
  297. #define FID_Tempo         124
  298. #define FID_Position      125
  299. #define FID_Routine       126
  300.  
  301. #endif /* SYSTEM_SYSOBJECT_H */
  302.